Cette page a pour l'ambition de vous permettre de vous en sortir, et au moins de comprendre ce que vous faites.
NB: Comme je n'y entends pas grand chose non plus, cette page est aussi un appel à contribution pour les gurus afin de trier les contradictions qui jonchent les forums
1) L'encodage par défaut sous Windows (interface graphique) est cp1252.
2) L'encodage par défaut d'une console DOS est cp850 pour les systèmes de l'Europe de l'Ouest (Western Europe) ou cp437 pour les Etats-Unis.
3) Aucun éditeur n'est capable - et ne le sera jamais - de déterminer l'encodage d'un fichier texte.
4) Les systèmes Linux et Windows (et d'autres) ou plutôt les bonnes applications de ces systèmes - peuvent travailler indifféremment avec différents encodages (généralement, ce sont ascii, cp1252, iso-8859-1 et utf-8, iso-8859-15 est moins utilisé) pour les utilisateurs de langues latines et anglo-saxonnes.
5) De 4) il découle que ces systèmes sont cohérents, les problèmes qui se posent sont généralement dus à une méconnaissance du fonctionnement des encodages.
6) Il est faux de croire qu'il faille changer l'encodage d'un fichier pour passer d'un système à un autre. Si l'échange de fichiers est régulier, il est préférable de régler ses outils de travail (éditeurs, …) en conformité avec les-dits fichiers.
7) Attention: le web est archi bourré d'informations fausses à ce sujet.
8) Attention (2): Se méfier comme de la peste de l'apparence d'une conversion réussie. Les encodages étant similaires pour de nombreux caractères, de nombreux utilisateurs croient en voyant le texte que la conversion était correcte ou suffisante alors que les choix des options de conversion sont erronés.
9) Une bonne introduction / explication sur ce que sont les encodages est ici : http://www.joelonsoftware.com/articles/Unicode.html
Préliminaire:
L'encodage dont il est question ici n'a de sens que pour les fichiers texte (ou plus exactement codés en texte et non en binaire). Cela inclut les codes sources, les fichiers log, les noms de fichiers (système de fichiers)
Pour des fichiers binaires, il existe différents types d'encodage, mais qui n'ont rien à voir avec le sujet de cette page.
L'objectif de l'encodage est d'associer un numéro pour chaque caractère d'une langue.
Il est indispensable, pour l'échange d'informations de préciser le codage utilisé.
Ne pas le faire peut rendre un document difficilement lisible (remplacement des lettres accentuées par d'autres suites de caractères, …). plus ici
L'ancêtre: l'ASCII
La norme de base est l’ASCII. Cette norme n'utilise que 7 bits et permet de coder 128 caractères (26*2 lettres + 10 chiffres + un peu de ponctuation + des caractères non affichables comme les sauts de lignes, mais pas d'accents).
Les ordinateurs modernes représentent chaque caractère avec au moins 8 bits (un octet), les codes 128 à 255 sont disponibles pour étendre l'ASCII (à des caractères accentués notamment). Ces extensions portent de nom de code page ou page de code.
Chaque page de code génère de fait un encodage different mais dont les 128 premiers caractères sont identiques et dont certains des suivants se recoupent parfois.
ASCII: standard de compatibilité, sans accent.
ANSI (Windows)
Unicode
UTF-8
UTF-16
Objectif:
file -i *
a.txt: text/x-pascal; charset=us-ascii
b.xml: text/xml
c.txt: text/plain; charset=utf-8
Attention : une conversion mal appropriée ou appliquée deux fois successivement risque de corrompre définitivement votre fichier (i.e. impossibilité de revenir en arrière par une conversion inversée. (sauvegardez donc vos données et faites des tests avant d'aller trop loin)
Exemple
#!/bin/bash for i in *.txt do iconv -f utf8 -t iso8859-15 "$i" > "$i".new done
Pour s'y retrouver dans les dénominations : une table
La plupart des éditeurs de textes sont capables de lire/écrire dans différents encodages. Il faut trouver l'option d'affichage adéquate (usuellement dans Outils > Encodage)
Pour une partition il faut préciser un encodage pour décrire les noms de fichiers (chaque fichier pouvant utiliser des encodages différents)
Sous linux, il faut indiquer l'encodage au montage de la partition (voir /etc/fstab).
Windows utilise par défaut le cp1252, une variante de l'iso 8859-1 (en grande partie similaires).
Général:
Description d'encodages particuliers:
Sources d'information les aspects Linux:
Contributeurs : — fnx Le 31/10/2009, 14:36 Merci à @Rom, aleph